char *conspath;
int ring_ref;
evtchn_port_t local_port;
+ evtchn_port_t remote_port;
int xce_handle;
struct xencons_interface *interface;
};
if (err)
goto out;
+ if ((ring_ref == dom->ring_ref) && (remote_port == dom->remote_port))
+ goto out;
+
if (ring_ref != dom->ring_ref) {
if (dom->interface != NULL)
munmap(dom->interface, getpagesize());
}
dom->local_port = -1;
+ dom->remote_port = -1;
if (dom->xce_handle != -1)
xc_evtchn_close(dom->xce_handle);
goto out;
}
dom->local_port = rc;
+ dom->remote_port = remote_port;
if (dom->tty_fd == -1) {
dom->tty_fd = domain_create_tty(dom);
xc_evtchn_close(dom->xce_handle);
dom->xce_handle = -1;
dom->local_port = -1;
+ dom->remote_port = -1;
goto out;
}
}
dom->ring_ref = -1;
dom->local_port = -1;
+ dom->remote_port = -1;
dom->interface = NULL;
dom->xce_handle = -1;